using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Roslyn.Compilers;
using Roslyn.Compilers.CSharp;
namespace SymbolicComputation.AI
{
    public class Assessers
    {
        public static Int32 VariablesOnRight(String inEquation, String variableBeingSolvedFor)
        {
            //count number of variables on right that are being solved for and decrement for each one
            List<String> strs = Miscellaneous.Split(inEquation.ToString(), "==", true);
            string rhs = strs[strs.Count - 1];
            SyntaxNode rhsTree = Miscellaneous.EquationToSyntaxNode(rhs);
            SyntaxNode[] rhsDescendants = rhsTree.DescendentNodesAndSelf().ToArray();
            SyntaxNode[] rhsMatches = rhsDescendants.Where(x => x.ToString() == variableBeingSolvedFor).ToArray();
            return rhsMatches.Length;
        }

        public static Int32 RepeatedVariables(SyntaxNode inEquation, String variableNotToRepeat)
        {
            SyntaxNode[] descendants = inEquation.DescendentNodesAndSelf().ToArray();
            SyntaxNode[] matches = descendants.Where(x => x.ToString() == variableNotToRepeat).ToArray();
            return matches.Length;
        }

    }
}